/*
 * GammaElias_gtest.h
 *
 *  Created on: 09/12/2012
 *      Author: d
 */

#ifndef GAMMAELIAS_GTEST_H_
#define GAMMAELIAS_GTEST_H_

#include <vector>
#include "../physical_layer/common_components/physical_layer_commons.h"
#include "../physical_layer/compresorGammaElias/ColeccionDeBits.h"
#include "../physical_layer/compresorGammaElias/GammaElias.h"

class GammaEliasTestFixture: public testing::Test {
public:
	//GammaEliasTestFixture();

    void SetUp()
    {
    }

    void TearDown()
    {
    }

	//virtual ~GammaEliasTestFixture();
};

//si bien un byte puede representar 255 valores estos  van de -128 a 127
//por lo tanto cuando un numero en representacion decimal se codifica se obtienen varios bytes
//que pueden tomar valores altos, pero hay que tener en cuenta que si superan a 127 se tendran valores
//negativos para no complicarme probe valores que no superen esa cantidad

TEST_F( GammaEliasTestFixture, PruebaCompressUncompress){

	GammaElias ge=GammaElias();

	byte* datoAcomprimir=(byte*)malloc(2*sizeof(char));
	byte* datoComprimido=(byte*)malloc(4*sizeof(char));
	size_t tamanioDelDato=2;
	datoAcomprimir[0]=5;
	datoAcomprimir[1]=20;


	int tamanioResultante=ge.compress(datoAcomprimir,datoComprimido,tamanioDelDato);


	ASSERT_EQ(datoComprimido[0],(byte)44);
	ASSERT_EQ(datoComprimido[1],(byte)1);
	ASSERT_EQ(datoComprimido[2],(byte)47);
	ASSERT_EQ(datoComprimido[3],(byte)4);

	ASSERT_EQ(tamanioResultante,4);


	byte* datoComprimido2=(byte*)malloc(4*sizeof(char));
	byte* datoDescomprimdo2=(byte*)malloc(2*sizeof(char));
	size_t tamanioDelDatoComprimido2=4;
	datoComprimido2[0]=44;
	datoComprimido2[1]=1;
	datoComprimido2[2]=47;
	datoComprimido2[3]=4;

	/*
	*/ int tamanioResultante2=ge.uncompress(datoComprimido2,datoDescomprimdo2,tamanioDelDatoComprimido2);

	ASSERT_EQ(datoDescomprimdo2[0],(byte)5);
	ASSERT_EQ(datoDescomprimdo2[1],(byte)20);

	ASSERT_EQ(tamanioResultante2,2);

}



#endif /* GAMMAELIAS_GTEST_H_ */
